﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;

namespace GRUPO_4.Pruebas
{
    [TestFixture]
    public class TestOfertaLaboralService
    {

        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://GRUPO-4/GRUPO_4/CapaNegocio.xml",
                "assembly://GRUPO-4/GRUPO_4/CapaPersistencia.xml");
        }

        [Test]
        public void TestRealizarOfertaLaboralCorrectamente()
        {
            OfertaLaboralService ofertaLaboralService = (OfertaLaboralService)this.contexto.GetObject("ofertaLaboralService");
            Assert.NotNull(ofertaLaboralService);
            OfertaLaboral ofertaLAboralRealizada = null;
            Assert.DoesNotThrow(delegate
            {
                OfertaLaboral ofertaLaboralNueva = new OfertaLaboral();
                ofertaLaboralNueva.idOfertaLaboral = 3123;
                ofertaLaboralNueva.lugarEmpleo = "ESAN";

                ofertaLAboralRealizada = ofertaLaboralService.CrearOfertalaboral(ofertaLaboralNueva);
            });

            Assert.NotNull(ofertaLAboralRealizada);
            Assert.Greater(ofertaLAboralRealizada.idOfertaLaboral, 0);
        }
        [Test]
        public void Test_EliminarOfertaLaboral()
        {
            
            OfertaLaboralService ofertaLaboralService = (OfertaLaboralService)this.contexto.GetObject("ofertaLaboralService");
            Assert.NotNull(ofertaLaboralService);
            OfertaLaboral ofertaLaboralExiste = ofertaLaboralService.ObtenerOfertaLaboral(23);
            OfertaLaboral ofertaLaboralEliminada = null;
            Assert.DoesNotThrow(delegate
            {
                ofertaLaboralService.EliminarOfertaLaboral(ofertaLaboralExiste);
            });
            Assert.Null(ofertaLaboralEliminada);

        }

        [Test]
        public void TestListarOfertaLaboral()
        {
            OfertaLaboralService ofertaLaboralService = (OfertaLaboralService)this.contexto.GetObject("ofertaLaboralService");
            Assert.NotNull(ofertaLaboralService);
            ICollection<OfertaLaboral> listaOfertaLaboral = null;
            Assert.DoesNotThrow(delegate
            {
                listaOfertaLaboral = ofertaLaboralService.ListarTodoslOfertas();
            });
            //CollectionAssert.IsNotEmpty(listaobtenida);
            Console.WriteLine(listaOfertaLaboral.Count);
            Assert.Greater(listaOfertaLaboral.Count, 0);
            foreach (OfertaLaboral Ofer in listaOfertaLaboral)
            {
                Console.WriteLine(Ofer.idOfertaLaboral + "|" + Ofer.fechInicio + "|" + Ofer.fechaCierre + "|" + Ofer.estado + "|" + Ofer.lugarEmpleo + "|" + Ofer.numeroVacantes + "|" + Ofer.codEmpresa + "|" + Ofer.codPuesto + "|" + Ofer.codContrato);
            }
        }

        [Test]
        public void TestConsultarOfertaLaboral()
        {
            OfertaLaboralService ofertaLaboralService = (OfertaLaboralService)this.contexto.GetObject("ofertaLaboralService");
            Assert.NotNull(ofertaLaboralService);
            OfertaLaboral ofertaLaboralConsultada = null;
           // Assert.DoesNotThrow(delegate
            //{
                ofertaLaboralConsultada = ofertaLaboralService.ObtenerOfertaLaboral(123);
           // });
            Assert.NotNull(ofertaLaboralConsultada);
        }


    
    
    
    }


}